﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Helena.Models;

namespace Helena.Areas.Configuraciones.Models
{
    public class LogicaConfiguraciones : InterfazLogicaConfiguraciones
    {
        DBContext conf_contexto = new DBContext();

        DBGenericQueriesUtil<Configuracion> Tabla_conf;
        DBGenericQueriesUtil<Local> Tabla_local;

        public DBContext context_publico { get { return conf_contexto; } }

        public LogicaConfiguraciones()
        {
            Tabla_conf= new DBGenericQueriesUtil<Configuracion>(conf_contexto,conf_contexto.t_configuracion);
            Tabla_local= new DBGenericQueriesUtil<Local>(conf_contexto,conf_contexto.t_Local);
        }

        public LocalView ObtenerLocal(int id = 1) 
        {
            LocalView n = new LocalView(Tabla_local.retornarUnSoloElemento(id));
            return n;
        }
        
        public List<ConfiguracionView> ObtenerConfiguraciones(int id=1) 
        {
            Local n = new Local();
            n = Tabla_local.retornarUnSoloElemento(id);
            ConfiguracionView cv = new ConfiguracionView();
            List<Configuracion> c= n.configuracion.ToList();

            List<ConfiguracionView> salida = new List<ConfiguracionView>();
            
            foreach (Configuracion x in c) 
            {
                if (x.Estado)
                {
                    salida.Add(new ConfiguracionView(x));
                }
            }
            return salida;
        }

        public ConfiguracionView ObtenerUltimaConfiguracion(int id=1) 
        {
            Local n = new Local();
            n = Tabla_local.retornarUnSoloElemento(1);
            ConfiguracionView cv = new ConfiguracionView();
            List<Configuracion> c = n.configuracion.ToList();

            IEnumerable<Configuracion> query = from conf in Tabla_conf.retornarTodos()
                                               where conf.Estado == true && conf.LocalID == id
                                               select conf;
            ConfiguracionView salida = new ConfiguracionView(query.OrderByDescending(t=>t.Fecha).FirstOrDefault());
            return salida;
        }
    }
}